#include <REGX52.H>
#include "OneWire.h"


//DS18B20指令
#define DS18B20_SKIP_ROM			0xCC	//跳过ROM
#define DS18B20_CONVERT_T			0x44	//温度转换
#define DS18B20_READ_SCRATCHPAD		0xBE	//读取暂存器




/**
  * @brief   DS18B20开始温度变换
  * @param   无
  * @retval  无
  */
void DS18B20_ConvertT()
{
	OneWire_Init();	//对返回值不做处理默认从机响应
	
	OneWire_SendByte(DS18B20_SKIP_ROM);	//跳过大门
	
	OneWire_SendByte(DS18B20_CONVERT_T);	//转换温度
}



/**
  * @brief   DS18B20读取温度
  * @param   无
  * @retval  温度数值
  */
float DS18B20_ReadT()
{
	int Temp = 0;	//中间变量
	float T = 0;	//最终温度
	
	unsigned char TLSB = 0x00;	//用于读取
	unsigned char TMSB = 0x00;	//温度
	
	OneWire_Init();								//对返回值不做处理默认从机响应
	OneWire_SendByte(DS18B20_SKIP_ROM);			//跳过大门
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);	//读取温度
	
	TLSB = OneWire_ReceiveByte();	//读取Byte0
	TMSB = OneWire_ReceiveByte();	//读取Byte1
	
	Temp = (int) (TMSB<<8) | TLSB;	//合成一个数据并强制类型转换为int类型,(int)可以省略
	T = Temp / 16.0;	//得到温度
	
	return T;	//返回温度数值
}






















